第三方应用使用SDK集成iPaaS,SDK通过发送rest请求远程调用iPaaS。
前置条件
第三方应用使用sdk提供API前,需要在iPaaS的"管理门户-资源管理-域管理"菜单创建域,并为域添加服务器组。
sdk的注册接口API目前只支持将接口注册并发布到esb-server服务器上。
# sdk开发说明
# 公共方法说明
1、com.primeton.esb.sdk.client.IServiceClient sdk客户端接口类,com.primeton.esb.sdk.client.impl.ServiceClient sdk客户端实现类
//获取服务管理API
IServiceManagerAPI getServiceManagerAPI();
//获取接口注册API
IServiceRegisterAPI getServiceRegisterAPI();
//获取系统管理API
ISystemManagerAPI getSystemManagerAPI();
2、com.primeton.esb.sdk.api.ISystemManagerAPI 系统管理接口类,com.primeton.esb.sdk.api.impl.SystemManagerAPIImpl 系统管理实现类
/**
* 注册系统
* @param systemInfo 系统信息
* @param addOrUpdate 操作类型,add=新增系统,upd=更新系统
* @param esbConfig sdk连接配置
* @return
*/
Result registerSystem(Map<String,Object> systemInfo, String addOrUpdate, ESBConfig esbConfig);
/**
* 删除系统
* @param appSystemCodes 系统编码集合
* @param esbConfig sdk连接配置
* @return
*/
Result deleteSystem(Collection<String> appSystemCodes, ESBConfig esbConfig);
/**
* 获取系统的访问凭证
* @param appSystemCode 系统编码
* @param esbConfig sdk连接配置
* @return
*/
Result getSystemToken(String appSystemCode,ESBConfig esbConfig);
3、com.primeton.esb.sdk.api.IServiceManagerAPI 服务管理接口类,com.primeton.esb.sdk.api.impl.ServiceManagerAPIImpl 服务管理实现类
/**
* 查询域信息
* @param domainName 域名称
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryDomainInfo(String domainName, int currentPage, int length, ESBConfig esbConfig);
/**
* 查询系统信息
* @param appCode 系统编码
* @param appName 系统名称
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> querySystemInfo(String appCode, String appName, int currentPage, int length, ESBConfig esbConfig);
/**
* 查询系统凭证
* @param appCode 系统编码
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> querySystemSecret(String appCode, ESBConfig esbConfig);
/**
* 根据域编码查询系统列表
* @param domainCode 域编码
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> querySystemInfoByDomainCode(String domainCode, int currentPage, int length, ESBConfig esbConfig);
/**
* 查询端口信息
* @param port 端口
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryPassagewayInfo(String port, int currentPage, int length, ESBConfig esbConfig);
/**
* 查询接口信息
* @param operationName 接口名称
* @param operationCode 接口编码
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryOperationInfo(String operationName,String operationCode, int currentPage, int length, ESBConfig esbConfig);
/**
* 根据服务编码查询接口列表
* @param serviceCode 服务编码
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryOperationInfoByServiceCode(String serviceCode, int currentPage, int length, ESBConfig esbConfig);
/**
* 查询服务信息
* @param serviceName 服务名称
* @param serviceCode 服务编码
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryServiceInfo(String serviceName,String serviceCode, int currentPage, int length, ESBConfig esbConfig);
/**
* 根据系统编码查询服务信息
* @param appCode 系统编码
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
public Result<PageCond> queryServiceInfoByAppCode(String appCode, int currentPage, int length, ESBConfig esbConfig);
/**
* 删除接口,该方法的效果等同于iPaaS页面上接口取消发布+删除代理接口+删除业务接口的操作
* @param operationCode 接口编码
* @param esbConfig sdk连接配置
* @return
*/
public Result deleteOperation(String operationCode, ESBConfig esbConfig);
/**
* 删除服务
* @param serviceCode 服务编码
* @param esbConfig sdk连接配置
* @return
*/
public Result deleteService(String serviceCode, ESBConfig esbConfig);
4、com.primeton.esb.sdk.api.IServiceRegisterAPI API注册接口类,com.primeton.esb.sdk.api.impl.ServiceRegisterAPI API注册实现类
/**
* 注册服务
* @param registerVO 服务信息
* @param esbConfig
* @return
*/
Result registerService(Map<String, String> registerVO, ESBConfig esbConfig);
/**
* 注册接口
* @param registerVO 接口信息
* @param esbConfig sdk连接配置
* @return
*/
Result registerOperation(Map<String, String> registerVO, ESBConfig esbConfig);
/**
* 校验接口编码
* @param operationCode 接口编码
* @param serviceCode 服务编码
* @param esbConfig sdk连接配置
* @return
*/
Result verifyOperationCode(String operationCode,String serviceCode,ESBConfig esbConfig);
/**
* 订阅接口
* @param appSystemCode 消费方系统编码
* @param userId 订阅人
* @param operationCodes 接口编码集合
* @param esbConfig sdk连接配置
* @return
*/
Result subscribe(String appSystemCode, String userId, Collection<String> operationCodes,ESBConfig esbConfig);
/**
* 查询订阅关系
* @param appSystemCode 消费方系统编码
* @param operationName 接口名称
* @param currentPage 页码
* @param length 页长
* @param esbConfig sdk连接配置
* @return
*/
Result querySubscribe(String appSystemCode,String operationName, int currentPage,int length,ESBConfig esbConfig);
/**
* 取消订阅
* @param appSystemCode 消费方系统编码
* @param operationCode 接口编码
* @param esbConfig sdk连接配置
* @return
*/
Result deleteSubscribe(String appSystemCode,String operationCode,ESBConfig esbConfig);
# sdk连接配置说明
public class ESBConfig {
//iPaaS服务ip
private String ip;
//iPaaS服务端口
private String port;
//登录iPaaS用户名
private String userName;
//登录iPaaS密码
private String password;
//第三方应用是否通过afc与iPaaS集成
private boolean mircoAppIntegration;
//afc访问凭证
private String afcToken;
...
}
sdk连接配置支持三种方式:
1、通过用户密码连接,需要设置ip、port、userName和password
ESBConfig esbConfig=new ESBConfig();
esbConfig.setIp("192.168.17.156");
esbConfig.setPort("8080");
esbConfig.setUserName("manager");
esbConfig.setPassword("ipaas@123");
2、通过afc访问凭证连接,需要设置ip、port、afcToken(点击iPaaS页面右上角的个人头像,点击token管理,可以创建个人访问凭证)
ESBConfig esbConfig=new ESBConfig();
esbConfig.setIp("192.168.17.156");
esbConfig.setPort("8080");
esbConfig.setAfcToken("e789e7b1aa904b8ba7427e58e2607108");
3、如果第三方应用、iPaaS与Afcenter通过微应用方式集成,需要设置ip、port、mircoAppIntegration
ESBConfig esbConfig=new ESBConfig();
esbConfig.setIp("192.168.17.156");
esbConfig.setPort("8080");
esbConfig.setMircoAppIntegration(true);
# sdk调用返回值
public class Result<T> implements Serializable {
//API执行结果状态编码,OK.000000=成功
private String code = "OK.000000";
//API执行结果信息
private String message = "OK";
//返回的数据
private T data;
}
# sdk使用示例说明
//创建sdk连接配置
ESBConfig esbConfig=new ESBConfig();
esbConfig.setIp("192.168.17.156");
esbConfig.setPort("8080");
esbConfig.setAfcToken("e789e7b1aa904b8ba7427e58e2607108");
...
//创建sdk客户端实例
IServiceClient serviceClient = new ServiceClient()
...
//根据域名称查询域信息
Result result=serviceClient.getServiceManagerAPI().queryDomainInfo("测试域",1,10,esbConfig);
...
//根据域编码查询系统列表
Result result=serviceClient.getServiceManagerAPI().querySystemInfoByDomainCode("test.domain",1,10,esbConfig);
...
//注册系统
//按照规范,系统编码=域编码+"."+系统自身编码
Map<String,Object> systemInfo=new HashMap<>();
systemInfo.put("appCode","test.domain.system");//系统编码
systemInfo.put("appName","测试系统");//系统名称
systemInfo.put("domainCode","test.domain");//域编码
systemInfo.put("sortNo",1);//系统排序
Result result=serviceClient.getSystemManagerAPI().registerSystem(systemInfo,"add",esbConfig);
...
//查询系统凭证
Result result=serviceClient.getServiceManagerAPI().querySystemSecret("test.domain.system",esbConfig);
...
//查询端口信息
Result result=serviceClient.getServiceManagerAPI().queryPassagewayInfo("10001",1,10,esbConfig);
...
//根据系统编码查询服务列表
Result result=serviceClient.getServiceManagerAPI().queryServiceInfoByAppCode("test.domain.system",1,10, esbConfig);
...
//注册服务
//按照规范,服务编码=系统编码+"."+服务自身编码
Map<String, String> serviceMap = new HashMap<>();
serviceMap.put("appCode","test.domain.system");//系统编码
serviceMap.put("serviceName","主数据接口测试01");//服务名称
serviceMap.put("serviceCode","test.domain.system.mdm01");//服务编码
return serviceClient.getServiceRegisterAPI().registerService(serviceMap,esbConfig);
...
//根据服务编码查询接口列表
Result result=serviceClient.getServiceManagerAPI().queryOperationInfoByServiceCode("test.domain.system.mdm01",1,10,esbConfig);
...
//校验接口编码是否存在
//注册接口前需要校验接口编码是否存在,否则会注册失败
Result result=serviceClient.getServiceRegisterAPI().verifyOperationCode("test.domain.system.mdm01.users01","test.domain.system.mdm01",esbConfig);
...
//注册接口
//按照规范,接口编码=服务编码+"."+接口自身编码,接口编码保持唯一,否则会注册失败
//注册接口时请确保接口代理uri(proxyUri)保持唯一,否则会注册失败
Map<String, String> operationMap = new HashMap<>();
operationMap.put("operationName","查询数据01");//接口名称
operationMap.put("proxyUri","/test/login111");//接口代理uri
operationMap.put("businessUri","/user/api/web/oauth2/login");//接口业务uri
operationMap.put("serviceCode","test.domain.system.mdm01");//服务编码
operationMap.put("operationCode","test.domain.system.mdm01.users01");//接口编码
operationMap.put("channelId","0ec7ffdb1deb49a49e78731594c056dc");//端口id
operationMap.put("businessServiceProtocol","http");//接口访问协议,http或https
operationMap.put("businessServiceIp","192.168.17.159");//接口访问ip
operationMap.put("businessServicePort","7011");//接口访问端口
operationMap.put("appCode","test.domain.system");//系统编码
operationMap.put("method","2");//接口请求方式:1=GET,2=POST,3=PUT,4=DELETE
Result result=serviceClient.getServiceRegisterAPI().registerOperation(operationMap,esbConfig);
...
//订阅接口
//消费方系统编码,订阅人用户id,接口编码集合
Result result=serviceClient.getServiceRegisterAPI().subscribe("test.domain.system","21",Collections.singleton("test.domain.system.mdm01.users01"),esbConfig);
...
//查询接口令牌
Result result=serviceClient.getSystemManagerAPI().getSystemToken("test.domain.system", esbConfig);
...
//根据系统编码查询已定阅的接口
Result result=serviceClient.getServiceRegisterAPI().querySubscribe("test.domain.system",null,1,10,esbConfig);
...
//删除订阅关系
//消费方系统编码,接口编码
Result result=serviceClient.getServiceRegisterAPI().deleteSubscribe("test.domain.system","test.domain.system.mdm01.users01",esbConfig);
...
//根据接口编码删除接口
//删除接口API的效果等同于iPaaS页面上接口取消发布+删除代理接口+删除业务接口
Result result=serviceClient.getServiceManagerAPI().deleteOperation("test.domain.system.mdm01.users01",esbConfig);
...
//根据服务编码删除服务
//删除服务前必须先删除服务下的所有接口,否则会删除失败
Result result=serviceClient.getServiceManagerAPI().deleteService("test.domain.system.mdm01",esbConfig);
...
//根据系统编码删除系统
//删除系统前必须先删除系统下的所有服务,否则会删除失败
Result result=serviceClient.getSystemManagerAPI().deleteSystem(Collections.singleton("test.domain.system"),esbConfig);
...